package com.wqc.dynaproxy.jdk;

import com.wqc.dynaproxy.PerformanceMonitor;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 *JDK 动态代理
 */
// 实现InvocationHandler接口
public class PerformanceHandler implements InvocationHandler {
    private Object target;  // target 为业务类
    public PerformanceHandler(Object target){
        this.target = target;
    }

    // 实现 invoke()方法, 返回代理对象
    @Override
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        // 开启性能监视
        PerformanceMonitor.begin(
                target.getClass().getName() + "." + method.getName());
        // 通过反射调用业务方法
        Object obj = method.invoke(target, args);
        // 结束性能监视
        PerformanceMonitor.end();
        return obj;
    }
}
